<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.dynajax.org/config" elementFormDefault="qualified" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.dynajax.org/config" xmlns:vs="http://schemas.microsoft.com/Visual-Studio-Intellisense" vs:friendlyname="DynAjax XML configuration file Schema" vs:ishtmlschema="false" vs:iscasesensitive="true" vs:requireattributequotes="true" vs:defaultnamespacequalifier="" vs:defaultnsprefix="">
  <xs:annotation>
    <xs:documentation>
      DynAjax XML configuration Schema Definition
    </xs:documentation>
  </xs:annotation>
  <xs:element name="dynAjaxParams">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="generalConfig" minOccurs="1" maxOccurs="1" nillable="false">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="checkAuthentication" maxOccurs="1" minOccurs="0" nillable="true">
                <xs:complexType mixed="true">
                  <xs:sequence>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="authenticationMethod" maxOccurs="1" minOccurs="0" nillable="true">
                <xs:complexType>
                  <xs:sequence />
                  <xs:attribute name="assemblyName" type="xs:string" />
                  <xs:attribute name="className" type="xs:string" />
                  <xs:attribute name="methodName" type="xs:string" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element ref="class" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="method" nillable="true">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="param" maxOccurs="unbounded" minOccurs="0" />
        <xs:element ref="onException" maxOccurs="1" minOccurs="0" />
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" />
      <xs:attribute name="needAuth" type="xs:boolean" />
    </xs:complexType>
  </xs:element>
  <xs:element name="param">
    <xs:complexType>
      <xs:sequence />
      <xs:attribute name="name" type="xs:string" />
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="boolean" />
            <xs:enumeration value="string" />
            <xs:enumeration value="int" />
            <xs:enumeration value="long" />
            <xs:enumeration value="decimal" />
            <xs:enumeration value="IDictionary" />
            <xs:enumeration value="IList" />
            <xs:enumeration value="DateTime" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="class">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="method" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="assemblyName" type="xs:string" />
      <xs:attribute name="className" type="xs:string" />
    </xs:complexType>
  </xs:element>
  <xs:element name="onException">
    <xs:complexType>
      <xs:sequence>
      </xs:sequence>
      <xs:attribute name="action" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="JSMethod" />
            <xs:enumeration value="JSEval" />
            <xs:enumeration value="returnValue" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="parameter" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
</xs:schema>